#ifndef PHONETOSETZB3CMD_H
#define PHONETOSETZB3CMD_H
#include "Command/BaseCmd.h"
#include "Protocol/CloudProtocol.h"
#include"DataType/Zigbee3Struct.h"
class SetUPZigbee3Cmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::SetUPZigbee3};

    Q_INVOKABLE explicit SetUPZigbee3Cmd(QObject *parent = 0);

    Package toPackage();
    void unPackage(Package package);
};


class AllowToJoinZigbee3Cmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::AllowtoJoinZigbee3};

    Q_INVOKABLE explicit AllowToJoinZigbee3Cmd(QObject *parent = 0);

    Package toPackage();
    void unPackage(Package package);
};

class ApplyToQuitZigbee3Cmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::ApplytoQuitZigbee3};

    Q_INVOKABLE explicit ApplyToQuitZigbee3Cmd(QObject *parent = 0);

    Package toPackage();
    void unPackage(Package package);
    quint16 cmdID();
private:
    QByteArray  m_nwk;
    quint16 m_cmdID;
};

class ZBQuitFeedBackCmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::ZBQuitFeedBack};

    Q_INVOKABLE explicit ZBQuitFeedBackCmd(QObject *parent = 0);

    Package toPackage();
    void unPackage(Package package);
     quint16 cmdID();
private:
    quint16 m_cmdID;
};


class QueryZigbee3PropertiesCmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::QueryZigbee3Properties};

    Q_INVOKABLE explicit QueryZigbee3PropertiesCmd(QObject *parent = 0);

    quint16 cmdID();

    Package toPackage();
    void unPackage(Package package);
private:
    quint16 m_cmdID;
};

class SetZigbee3DataCmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::SetZigbee3Data};

    Q_INVOKABLE explicit SetZigbee3DataCmd(QObject *parent = 0);

    Zigbee3Struct zigbee3Struct();
    quint16 getcmdid();
    Package toPackage();
    void unPackage(Package package);

private:
    Zigbee3Struct m_zigbee3Struct;
    quint16 m_getCmdID;
};

class Zigbee3QueryDataCmd : public BaseCmd
{
    Q_OBJECT

public:
    enum{FunctionCode = CloudProtocol::QueryZigbee3Data};

    Q_INVOKABLE explicit Zigbee3QueryDataCmd(QObject *parent = 0);

    Package toPackage();
    void unPackage(Package package);
    quint16 getcmdid();
private:
    quint16 m_getcmdID;
};
#endif // PHONETOSETZB3CMD_H
